This note documents version 2.1 of MandelZot. This is a beta release, and has not been subjected to the degree of testing that I normally apply to official release versions of MandelZot. Be forewarned that this version might be buggy. The documentation file has not been rewritten yet, and probably won't be until I get the External Function Interface working (which will herald version 2.2 or 3.0, depending on how I feel about it).
One known problem with 2.1: if you run under the 32-bit Color QuickDraw environment, and don't have MultiFinder turned on, then your Mac II will almost certainly crash when you Quit. I don't know why... the Palette Manager seems to be involved, but I've been unable to pin down a precise cause. My hack for preventing this crash worked OK under THINK C 3.0 but does not work under 4.0, which is what I used to build this version with.
Biggest change since 2.0: it now supports Julia-set calculations as well as the M-set iteration. Julia sets can be selected in either of two ways:
1) Pull down "New view, center & mag..." (or hit command-N). This dialog box now has a check-button to enable the Julia-set calculation, plus two text-fields into which the real and imaginary components of the Julia-set "c" value are to be entered (these fields are enabled only when the Julia-set button is checked). The default (magnification 1) Julia-set view runs from -2.0 to 2.0 in each direction.
2) If you have an interesting M-set image on the screen, put the cursor over it and hold down the command key. The cursor will change to an X with a dot in the middle. Center the X over a point-of-interest, and click. The "New view, center & mag..." dialog box will pop up, with the Julia-set button checked and the coordinates you clicked upon entered into the "c" fields. Adjust values as necessary and click OK.
Because the "New view, center & mag..." dialog is now the "interesting" one, I've assigned the command-N key to it. The old "New view" menu selection is now "New overview", command-O.
I've made a few other changes. For one, I've rewritten the animated-cursor code so that it doesn't change cursors from within an interrupt-level task. This should eliminate the residual-cursor-on-the-screen problem. I've also fixed a bug in the image-redraw code, which would be seen if you tried to change some image parameters while displaying the image in the colored-pen or patterned-pen modes.
I've added a couple of new hacks to the distance estimator. For one: I noticed that the disks cut during Julia-set calculations were sometimes either too small (inefficient) or too large (wiping out points on the J-set borders). So, I've added a "correction factor" to the disk-radius calculation. This factor defaults to 1.0, and can be adjusted to suit the needs of the moment. If you're calculating a disconnected (Cantor dust) Julia set, try setting the correction factor to .5 or so... the image will look rather better.
For another thing, I've made it possible to disable the disk-cutting aspect of the distance estimator. By turning the disk-cutter off, the distance estimator becomes a simple border-of-M (or border-of-J) detector, with no disks being visible in the image (the dwell-band edges remain smooth). If you turn the distance estimator on, and turn the disk cutter off, you can use the Mariani/Silver divide-and-conquer algorithm to good effect. This mode is an interesting one... a nice compromise between the standard mode and the Fisher-suggested disk cutter.
I've combined the "Divide-and-conquer algorithm" and "Distance-estimator settings" menu items and dialog boxes into one item/box entitled "Algorithm tweaks".
The Julia-set calculations seem to be most interesting when the distance estimator is used, either in disk-cutting or border-detection modes. Try digging into the Elephant Valley... choose a well-shaped elephant, command-click a point in the elephant's body, and calculate the resulting Julia image in border-detection mode. Reminds me of two elephants balancing on one anothers' toes in zero gravity...
I've added a bit of code to the image-printing subroutines. Images printed to QuickDraw or PostScript printers will now be labelled... the name of the view appears above the image, and the coordinate image, magnification, and (if applicable) the Julia control-point coordinates appear below the image. These labels are suppressed if there isn't enough room for them on the page.
I've added a new command to the File... menu: "Catalog scan". This command will ask you to identify a folder or disk that is to be searched, recursively, for MandelZot image files. It will then ask you to identify a file into which the catalog should be written. It will scan the selected folder or disk, and write a line into the catalog each time it finds a MandelZot data file. The lines written into the catalog consist of multiple fields, separated by tabs; fields for each file include the file's path, type (M or M Julia), center coordinates, magnification, and numerous other values that distinguish one image from another. The first line in the file is a header, which identifies all of the fields. You can load the catalog file into most spreadsheet programs, or print it with a word-processing program.
As always, comments and suggestions will be most welcome!